package com.woniuxy.amusementparkos.dao.lvd;

import com.woniuxy.amusementparkos.entity.lvd.CompulsorySettlement;
import com.woniuxy.amusementparkos.entity.lvd.ExpenditureRecord;
import com.woniuxy.amusementparkos.entity.lvd.MerchantTransactions;
import com.woniuxy.amusementparkos.entity.lvd.RevenueRecord;
import com.woniuxy.amusementparkos.entity.lvd.StoreTypeRevenueVisits;
import com.woniuxy.amusementparkos.entity.lvd.SummaryReport;

import java.util.List;

/**
 * @author LVD
 */
public interface FinancialStatisticsDao {
	// 查询指定页数据
	List<SummaryReport> selectPage(int page, int pageSize);

	// 查询记录总条数
	long selectRecordCount();

	// 插入汇总数据
	void insertSummaryReport(SummaryReport summaryReport);

	// 根据id修改汇总数据
	void updateSummaryReport(SummaryReport summaryReport);

	// 根据id删除汇总数据
	void deleteSummaryReport(String id);

	// 查询汇总表日期
	List<String> selectSummaryDate();

	// 根据周日和周一的日期查询这一周内的汇总数据
	List<SummaryReport> selectWeekSummaryReports(String monday, String sunday);

	// 查询充值总额
	double selectTotalRecharge();

	// 查询消费总额
	double selectTotalConsumption();

	// 查询总收入
	double selectTotalRevenue();

	// 查询总支出
	double selectTotalExpenditure();

	// 根据周日和周一的日期查询一周之内的收入数据
	List<RevenueRecord> selectWeekRevenue(String monday, String sunday);

	// 根据周日和周一的日期查询一周之内的支出数据
	List<ExpenditureRecord> selectWeekExpenditure(String monday, String sunday);

	// 查询订单表日期
	List<String> selectOrderDate();

	// 查询每种商户类型下顾客的消费总额和访问人次
	List<StoreTypeRevenueVisits> selectStoreTypeRevenueVisits();

	// 查询最近一周每种商户类型下顾客的消费总额和访问人次
	List<StoreTypeRevenueVisits> selectWeekStoreTypeRevenueVisits(String monday, String sunday);

	// 根据日期查询每个商户的收入情况
	List<MerchantTransactions> selectMerchantTransactions(String begin, String end);

	// 查询强制结算表数据总条数
	Long selectCompulsorySettlementCount();

	// 根据日期、腕带编号、状态、处理方式查询强制结算记录
	List<CompulsorySettlement> selectCompulsorySettlementByCondition(String start, String end, String status,
			String handle, String wriststrpid, int page, int pageSize);

}
